This page contains tips on installing Arch Linux on an Early 2011 MacBook Pro.

discuss at [https://bbs.archlinux.org/viewtopic.php?pid=1021706](https://bbs.archlinux.org/viewtopic.php?pid=1021706)

## Contents

*   [1 Installation](#Installation)
    *   [1.1 EFI Boot](#EFI_Boot)
        *   [1.1.1 Using rEFInd and Kernel EFISTUB](#Using_rEFInd_and_Kernel_EFISTUB)
    *   [1.2 BIOS boot](#BIOS_boot)
*   [2 Wireless network](#Wireless_network)
*   [3 Keyboard and touchPad](#Keyboard_and_touchPad)
    *   [3.1 Keyboard](#Keyboard)
    *   [3.2 Touchpad](#Touchpad)
*   [4 Video and screen](#Video_and_screen)
*   [5 Sound](#Sound)
*   [6 Suspend and hibernate](#Suspend_and_hibernate)
*   [7 HFS+](#HFS.2B)
*   [8 Bluetooth](#Bluetooth)
*   [9 Webcam](#Webcam)
    *   [9.1 With linux-mainline](#With_linux-mainline)
*   [10 Others that works-out-of-the-box](#Others_that_works-out-of-the-box)
*   [11 Troubleshooting](#Troubleshooting)

## Installation

Use the latest Arch Installation Image from here: [https://www.archlinux.org/download/](https://www.archlinux.org/download/)

### EFI Boot

Consult [UEFI](/index.php/UEFI "UEFI")

**Warning:** efibootmgr may brick your Mac firmware.

radeon driver which only loads properly on Macs in BIOS emulation mode, problem description and possible solution [here](https://bugs.freedesktop.org/show_bug.cgi?id=26891).

**8,1**

Tested on macbook pro 8.1 . Forum thread: [[1]](https://bbs.archlinux.org/viewtopic.php?id=136833&p=1)

Add following to Kernel Parameters.

```
 i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 usbcore.autosuspend=1 h

```

**8,2 and 8,3**

While using EFI Boot, you will find

```
 radeon 0000:01:00.0: >Invalid ROM contents
 i915 0000:00:02.0: Invalid ROM contents

```

Which means you need disable KMS for amd and intel card. Add following to Kernel Parameters.

```
 i915.modeset=0 radeon.modeset=0

```

newer versions of the Xorg Intel/i915 driver require KMS to work; without it the X server will fallback to framebuffer mode, with poor performance. The underlying issue is that the Intel KMS driver selects the wrong video output; to fix this try the following settings (tested on an 8,3/17" MBP):

```
 radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2

```

This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from AUR if necessary. See [this bug](https://bugzilla.kernel.org/show_bug.cgi?id=42842) for more details.

If you don't have KMS for intel driver, you need install [xf86-video-fbdev](https://www.archlinux.org/packages/?name=xf86-video-fbdev) and, of course [xf86-video-intel](https://www.archlinux.org/packages/?name=xf86-video-intel).

If Xorg refuses to start with a "no screens found" message you may have to tell Grub2 to turn off the Radeon card and turn on the Intel card during boot. Edit /etc/grub.d/00_header and add the "outb" lines immediately after "set gfxmode=" (Tested on an 8,2 MBP):

```
 ...
 set gfxmode=${GRUB_GFXMODE}
 outb 0x728 1
 outb 0x710 2
 outb 0x740 2
 outb 0x750 0
 load video
 ...

```

Then regenerate your `grub.cfg`:

```
 # grub-mkconfig -o /boot/grub/grub.cfg

```

#### Using rEFInd and Kernel EFISTUB

**Install rEFInd**

Consult [Installing rEFInd](http://www.rodsbooks.com/refind/installing.html)

Boot into Mac OS X

```
 # mkdir -p /efi/refind
 # cp -r refind/* /efi/refind/
 # rm /efi/refind/refind_ia32.efi
 # mv /efi/refind/refind.conf-sample /efi/refind/refind.conf and adjust it
 # bless --setBoot --folder /efi/refind --file /efi/refind/refind_x64.efi

```

**Setting up EFISTUB**

Follow [UEFI Bootloaders#Linux Kernel EFISTUB](/index.php/UEFI_Bootloaders#Linux_Kernel_EFISTUB "UEFI Bootloaders")

**Add Kernel MODULES**

Without this, you will get 'root fs not found' error.

Edit `/etc/mkinitcpio.conf`:

```
 MODULES="..ahci libahci.."

```

Then re-generate the boot img:

```
 # mkinitcpio -p linux

```

### BIOS boot

Boot into BIOS emulation mode. AMD card works, but intel card doesn't.

Use refind to load GRUB legacy.

## Wireless network

See [Broadcom wireless](/index.php/Broadcom_wireless "Broadcom wireless") for b43 installation and usage.

## Keyboard and touchPad

### Keyboard

Default F1 key represents XF86MonBrightnessDown, if you want it represents to F1\. Set `fnmode=2` parameters to hid_apple module. See [Kernel modules#Configuration](/index.php/Kernel_modules#Configuration "Kernel modules") for instruction.

### Touchpad

Two finger scrolling and left-click works out of the box. Unfortunately the right-click is not functional.

**14/09/2012 : right click (2 fingers) and middle click (3 fingers) works out of the box with KDE.**

There are two drivers to provide features to the touchpad (including right and middle click): [mtrack](https://github.com/BlueDragonX/xf86-input-mtrack) which is reported to work well and [Synaptics](/index.php/Synaptics "Synaptics") which provides more features but might require some tuning.

**mtrack:**

Mtrack is available in [AUR](https://aur.archlinux.org/packages.php?ID=48505). The configuration is done via the /etc/X11/xorg.conf.d/10-mtrack.conf file. Check if the mtrack module is properly loaded in the /var/log/Xorg.0.log file. Sometimes xorg loads other drivers before, like eg. synpatics, and the mtrack driver is not used at all.

For an MBP 8,3 I needed to use the following config (in /etc/X11/xorg.conf.d/10-mtrack.conf) to stop it picking up other input devices by mistake:

```
Section "InputClass"
  Identifier "Multitouch Touchpad"
  Driver "mtrack"
  MatchDevicePath "/dev/input/event*"
  MatchProduct "bcm5974"
  MatchIsTouchpad "true"
EndSection

```

**synaptics:**

See [Touchpad Synaptics#Installation](/index.php/Touchpad_Synaptics#Installation "Touchpad Synaptics") for synaptics installation and configuration instructions.

**Tip:** [Synclient](/index.php/Touchpad_Synaptics#Synclient "Touchpad Synaptics") provides some additional configuration for the touchpad.

```
 #list all possible configurable parameters.
 synclient

 #To change a value for a command use `synclient command=X`
 #Example:
 synclient HorizTwoFingerScroll=1

```

After you have successfully tried and tested your options through synclient, you can make these changes permanent by adding them to /etc/X11/xorg.conf.d/50-synaptics.conf

## Video and screen

**13-inch**

Intel HD Graphics 3000: works with [xf86-video-intel](https://www.archlinux.org/packages/?name=xf86-video-intel).

Adjust Brightness: works with [xorg-xbacklight](https://www.archlinux.org/packages/?name=xorg-xbacklight) For example:

```
$ xbacklight -inc 7 # increase brightness
$ xbacklight -dec 7 # decrease brightness

```

or you can use a simple bash script that provides screen and keyboard backlight management by simple cli (-d for display / -k for keyboard)

```
#!/bin/bash
case $1 in
       -d|--display)
           if [ "$2" != "0" ]
               then
                   echo "$[(($2 * 4882) / 100) % 4883]" > /sys/class/backlight/intel_backlight/brightness
           fi;;
       -k|--keyboard)
           echo "$[(($2 * 255) / 100) % 256]" > /sys/class/leds/smc\:\:kbd_backlight/brightness;;
       -h|--help)
           echo -e "MacBook 8.1 brightness helper
\t-d\tset display brightness (0-100%)
\t-k\tset keyboard brightness (0-100%)
";;
       *)
           echo -e "Unknown option try -h or --help";;
esac

```

Save it in `/usr/local/bin/macbackl` and mark it as executable:

```
# chown +x /usr/bin/macbackl

```

For usage, run:

```
$ macbackl --help

```

**Note:** You must be root to edit the files in `/sys/class/*` but if you want you can chown `/sys/class/leds/smc\:\:kbd_backlight/brightness` and `/sys/class/backlight/intel_backlight/brightness`

**15-inch and 17-inch**

AMD Radeon HD 6490M: Unknown.

AMD Radeon HD 6750M and 6770M: works with [xf86-video-ati](https://www.archlinux.org/packages/?name=xf86-video-ati).

Adjust Brightness: install AUR package [apple-bl-gmux](https://aur.archlinux.org/packages/apple-bl-gmux/) and reboot system.

```
# echo 34839 > /sys/class/backlight/gmux_backlight/brightness

```

## Sound

**8,1 and 8,2**

```
$ alsamixer # unmute 'Front Speaker' and 'Surround Speaker'

```

**8,3**

Using [PulseAudio](/index.php/PulseAudio "PulseAudio") sound works out of the box. However some applications (e.g. [Vlc](/index.php/Vlc "Vlc")) have intermittent crackling; appending 'tsched=0' to 'module-udev-detect' in /etc/pulse/default.pa fixes this.

## Suspend and hibernate

Consulte [Suspend and hibernate](/index.php/Suspend_and_hibernate "Suspend and hibernate").

**8,1**

For s2ram install [uswsusp-git](https://aur.archlinux.org/packages/uswsusp-git/) and add to file `/etc/pm/config.d/module` following content:

```
 SUSPEND_MODULES="bcma b43" 
 SLEEP_MODULE=uswsusp

```

Without this, system hangs after the machine wakes up and tries to reconnect to the wireless network.

**8,2**

BIOS Boot: using linux >= 3.6.2, supend and resume works out-of-the-box.

EFI Boot: resume may not work.

**8,3**

Supend and resume work out of the box, including wireless reconnection.

## HFS+

HFS is mounted as Read-Only. By [turning journaling off](http://support.apple.com/kb/ht2355) in OS X, the HFS+ file system will be read/write under Linux.

## Bluetooth

I had problems pairing devices, nothing was detected with

```
hcitool scan

```

There seems to be a conflict between the bluetooth module and the b43 one (wifi), as written in [this blog post](http://blog.tkassembled.com/188/macbook-pro-83-bluetooth-issues-on-linux/). The solution is creating `/etc/modprobe.d/b43.conf` with the following content:

```
options b43 btcoex=0

```

## Webcam

In order to use your webcam you need to have permission to use /dev/video0\.

```
# gpasswd -a *username* video

```

Test to see if it works

```
$ mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -fps 15 -vf screenshot

```

### With linux-mainline

As noted elsewhere in this document, some MBP features work best (or only) with the latest kernel; the usual way to install this is using the [linux-mainline](https://aur.archlinux.org/packages/linux-mainline/) package. However, as of 3.6.rc3 the config for linux-mainline disables webcam support (due to changed defaults in kernel). [This patch](http://pastebin.com/WbYpPrg1) to the x86_64 config fixes this issue.

## Others that works-out-of-the-box

*   Sensors

## Troubleshooting

**Grub2-EFI boot: Intel invalid ROM contents**

If you see this error on boot and notice the screen output seemingly frozen, you need to disable KMS.

Append the following to your /etc/grub/defaults LINUX line:

```
i915.modeset=0 radeon.modeset=0

```

However, newer versions of the Xorg Intel/i915 driver require KMS to work; without it the X server will fallback to framebuffer mode, with poor performance. The underlying issue is that the Intel KMS driver selects the wrong video output; to fix this try the following settings (tested on an 8,3/17" MBP):

```
radeon.modeset=0 i915.modeset=1 i915.lvds_channel_mode=2

```

This should give you Intel graphics output. Note that this requires kernel 3.5rc1 or higher; use linux-mainline from Aur if necessary. See [this bug](https://bugzilla.kernel.org/show_bug.cgi?id=42842) for more details.

You may find you need to enable the Intel device; if using Grub, the following should enable it at boot time:

```
set gfxpayload=keep
# Switch gmux to IGD
outb 0x728 1
outb 0x710 2
outb 0x740 2

```

Alternatively, if you have OS X available you can use [gfxCardStatus](http://codykrieger.com/gfxCardStatus) to switch to the Intel device before booting into Linux.

**Grub2-EFI boot: root fs not found**

On boot, grub2-efi may complain that no root fs is found. This is due to the ahci modules being improperly loaded.

chroot into the installed Arch system. Then edit the `/etc/mkinitcpio.conf` MODULES array:

```
MODULES="..ahci libahci.."

```

Then re-generate the boot img:

```
# mkinitcpio -p linux

```